package com.sapitest.keywords;

import com.sapitest.utils.linux.LinuxUtil;
import org.testng.Reporter;

/**
 * linux通过SSH2远程连接操作关键字封装类
 * @date 2019-01-13
 * @author Liuxu
 * @version 1.0.0
 * @since jdk1.8
 */
public class LinuxOperation {
    /**
     * 执行linux命令并返回结果
     * @param user  用户名
     * @param pwd   密码
     * @param host  主机IP
     * @param port  端口
     * @param commands  命令
     * @return  String
     */
    public static String execLinuxCommand(String user, String pwd, String host, int port, String commands){
        LinuxUtil linuxUtil = null;
        String result = null;
        try {
            linuxUtil = LinuxUtil.newInstance(user, pwd, host, port);
            if (linuxUtil != null) {
                result = linuxUtil.exec(commands);
            }
        } finally {
            if (linuxUtil != null) {
                linuxUtil.close();
            }
        }
        Reporter.log("执行linux命令结果：" + result, true);
        return result;
    }

    /**
     * 执行Linux命令并将结果输出到本地文件，执行成功，返回"执行成功。输出路径：xxx"，执行失败，返回"执行失败"
     * @param user  用户名
     * @param pwd   密码
     * @param host  主机IP
     * @param port  端口
     * @param commands  命令，命令需要以"\n"结尾，server端才认为是一条完整的命令
     * @param fileName  本地文件路径
     * @return  String
     */
    public static String execOutToFile(String user, String pwd, String host, int port, String commands, String fileName){
        LinuxUtil linuxUtil = null;
        try {
            linuxUtil = LinuxUtil.newInstance(user, pwd, host, port);
            if (linuxUtil != null) {
                return linuxUtil.shell(commands, fileName);
            }
        } finally {
            if (linuxUtil != null) {
                linuxUtil.close();
            }
        }
        return null;
    }

}
